package pe.com.cotelasa.scp.entidad;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.NotNull;


/**
 * The persistent class for the kardex database table.
 * 
 */
@Entity
@Table(name = "kardex",catalog = "bdcotelasa", schema = "cotelasa")
public class Kardex implements Serializable {

	private static final long serialVersionUID = 1L;

	@EmbeddedId
	private KardexPK id;
        
        @Basic(optional = false)
	@Column(name="ca_movimiento")
	private BigDecimal caMovimiento;

        @Basic(optional = false)
	@Column(name="ca_stock_final")
	private BigDecimal caStockFinal;

        @Basic(optional = false)
	@Column(name="ca_stock_incial")
	private BigDecimal caStockIncial;

	@Column(name="de_motivo_ajuste")
	private String deMotivoAjuste;
        
        @Column(name="estado_registro")
	private String estadoRegistro;
        
        @Basic(optional = false)
        @Column(name="partida_lote",insertable=false,updatable=false)
	private String partidaLote;
        
        @Column(name="fec_creacion")
	private Timestamp fecCreacion;
        
        @Basic(optional=false)
        @Column(name="fec_movimiento")
        @Temporal(TemporalType.TIMESTAMP)
	private Date fecMovimiento;

	@Column(name="fec_modificacion")
	private Timestamp fecModificacion;

	@Column(name="nu_documento")
	private String nuDocumento;
        
        @Column(name="ti_documento")
	private String tiDocumento;

	@Column(name="ti_movimiento")
	private String tiMovimiento;
        
        @Basic(optional = false)
	@Column(name="usr_creacion")
	private String usrCreacion;

	@Column(name="usr_modificacion")
	private String usrModificacion;

        @Basic(optional = false)
	@Column(name="va_costo_articulo")
	private BigDecimal vaCostoArticulo;

        @Basic(optional = false)
	@Column(name="va_costo_promedio")
	private BigDecimal vaCostoPromedio;

	@Column(name="va_precio_articulo")
	private BigDecimal vaPrecioArticulo;

        @Basic(optional = false)
	@Column(name="va_total_inventario")
	private BigDecimal vaTotalInventario;

	//bi-directional many-to-one association to Motivo
	@ManyToOne(optional=false)
	@JoinColumns({
		@JoinColumn(name="id_grupo_motivo_kardex", referencedColumnName="id_grupo_motivo"),
		@JoinColumn(name="id_motivo_kardex", referencedColumnName="id_motivo")
		})
	private Motivo motivo1;

	//bi-directional many-to-one association to Motivo
	@ManyToOne
	@JoinColumns({
		@JoinColumn(name="id_grupo_motivo_ajuste", referencedColumnName="id_grupo_motivo"),
		@JoinColumn(name="id_motivo_ajuste", referencedColumnName="id_motivo")
		})
	private Motivo motivo2;
        
        //bi-directional many-to-one association to Articulo
	@ManyToOne(fetch=FetchType.LAZY,optional=false)
	@JoinColumn(name="id_articulo", referencedColumnName = "id",insertable=false,updatable=false)
	private Articulo articulo;

	//bi-directional many-to-one association to Sede
	@ManyToOne(fetch=FetchType.LAZY,optional=false)
	@JoinColumn(name="id_sede", referencedColumnName = "id",insertable=false,updatable=false)
	private Sede sede;
        
        @JoinColumn(name = "id_empresa", referencedColumnName = "id",insertable=false,updatable=false)
	@ManyToOne(fetch = FetchType.LAZY,optional=false)
	private Empresa empresa;
        
        @JoinColumn(name = "id_unidad_medida", referencedColumnName = "id")
	@ManyToOne(optional = false,fetch=FetchType.LAZY)
	private TipoUnidadMinima unidadMedida;
        
        @JoinColumn(name = "id_guia_remision", referencedColumnName = "id")
	@ManyToOne(fetch=FetchType.LAZY)
	private GuiaRemision idGuiaRemision;
        
        @JoinColumn(name = "id_venta_facturacion", referencedColumnName = "coddocventa")
	@ManyToOne(fetch=FetchType.LAZY)
	private VentaFacturacion idVentaFacturacion;
        
        @JoinColumn(name = "id_orden_pedido", referencedColumnName = "id")
	@ManyToOne(fetch=FetchType.LAZY)
	private OrdenPedido idOrdenPedido;
        
	public Kardex() {
	}

	public KardexPK getId() {
		return this.id;
	}

	public void setId(KardexPK id) {
		this.id = id;
	}

	public BigDecimal getCaMovimiento() {
		return this.caMovimiento;
	}

	public void setCaMovimiento(BigDecimal caMovimiento) {
		this.caMovimiento = caMovimiento;
	}

	public BigDecimal getCaStockFinal() {
		return this.caStockFinal;
	}

	public void setCaStockFinal(BigDecimal caStockFinal) {
		this.caStockFinal = caStockFinal;
	}

	public BigDecimal getCaStockIncial() {
		return this.caStockIncial;
	}

	public void setCaStockIncial(BigDecimal caStockIncial) {
		this.caStockIncial = caStockIncial;
	}

	public String getDeMotivoAjuste() {
		return this.deMotivoAjuste;
	}

	public void setDeMotivoAjuste(String deMotivoAjuste) {
		this.deMotivoAjuste = deMotivoAjuste;
	}

	public String getEstadoRegistro() {
		return this.estadoRegistro;
	}

	public void setEstadoRegistro(String estadoRegistro) {
		this.estadoRegistro = estadoRegistro;
	}

	public Timestamp getFecCreacion() {
		return this.fecCreacion;
	}

	public void setFecCreacion(Timestamp fecCreacion) {
		this.fecCreacion = fecCreacion;
	}

	public Timestamp getFecModificacion() {
		return this.fecModificacion;
	}

	public void setFecModificacion(Timestamp fecModificacion) {
		this.fecModificacion = fecModificacion;
	}

	public String getNuDocumento() {
		return this.nuDocumento;
	}

	public void setNuDocumento(String nuDocumento) {
		this.nuDocumento = nuDocumento;
	}

	public String getTiDocumento() {
		return this.tiDocumento;
	}

	public void setTiDocumento(String tiDocumento) {
		this.tiDocumento = tiDocumento;
	}

	public String getTiMovimiento() {
		return this.tiMovimiento;
	}

	public void setTiMovimiento(String tiMovimiento) {
		this.tiMovimiento = tiMovimiento;
	}

	public String getUsrCreacion() {
		return this.usrCreacion;
	}

	public void setUsrCreacion(String usrCreacion) {
		this.usrCreacion = usrCreacion;
	}

	public String getUsrModificacion() {
		return this.usrModificacion;
	}

	public void setUsrModificacion(String usrModificacion) {
		this.usrModificacion = usrModificacion;
	}

	public BigDecimal getVaCostoArticulo() {
		return this.vaCostoArticulo;
	}

	public void setVaCostoArticulo(BigDecimal vaCostoArticulo) {
		this.vaCostoArticulo = vaCostoArticulo;
	}

	public BigDecimal getVaCostoPromedio() {
		return this.vaCostoPromedio;
	}

	public void setVaCostoPromedio(BigDecimal vaCostoPromedio) {
		this.vaCostoPromedio = vaCostoPromedio;
	}

	public BigDecimal getVaPrecioArticulo() {
		return this.vaPrecioArticulo;
	}

	public void setVaPrecioArticulo(BigDecimal vaPrecioArticulo) {
		this.vaPrecioArticulo = vaPrecioArticulo;
	}

	public BigDecimal getVaTotalInventario() {
		return this.vaTotalInventario;
	}

	public void setVaTotalInventario(BigDecimal vaTotalInventario) {
		this.vaTotalInventario = vaTotalInventario;
	}

	public Motivo getMotivo1() {
		return this.motivo1;
	}

	public void setMotivo1(Motivo motivo1) {
		this.motivo1 = motivo1;
	}

	public Motivo getMotivo2() {
		return this.motivo2;
	}

	public void setMotivo2(Motivo motivo2) {
		this.motivo2 = motivo2;
	}

        public TipoUnidadMinima getUnidadMedida() {
            return unidadMedida;
        }

        public void setUnidadMedida(TipoUnidadMinima unidadMedida) {
            this.unidadMedida = unidadMedida;
        }

    public String getPartidaLote() {
        return partidaLote;
    }

    public void setPartidaLote(String partidaLote) {
        this.partidaLote = partidaLote;
    }

    public Date getFecMovimiento() {
        return fecMovimiento;
    }

    public void setFecMovimiento(Date fecMovimiento) {
        this.fecMovimiento = fecMovimiento;
    }

    public Articulo getArticulo() {
        return articulo;
    }

    public void setArticulo(Articulo articulo) {
        this.articulo = articulo;
    }

    public Sede getSede() {
        return sede;
    }

    public void setSede(Sede sede) {
        this.sede = sede;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Kardex)) {
            return false;
        }
        Kardex other = (Kardex) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pe.com.cotelasa.scp.entidad.Kardex[ ID=" + id + " ]";
    }

    public GuiaRemision getIdGuiaRemision() {
        return idGuiaRemision;
    }

    public void setIdGuiaRemision(GuiaRemision idGuiaRemision) {
        this.idGuiaRemision = idGuiaRemision;
    }

    public OrdenPedido getIdOrdenPedido() {
        return idOrdenPedido;
    }

    public void setIdOrdenPedido(OrdenPedido idOrdenPedido) {
        this.idOrdenPedido = idOrdenPedido;
    }

    public VentaFacturacion getIdVentaFacturacion() {
        return idVentaFacturacion;
    }

    public void setIdVentaFacturacion(VentaFacturacion idVentaFacturacion) {
        this.idVentaFacturacion = idVentaFacturacion;
    }
}